// 1. 封装栈
/*
* 1. push: 添加一个新元素
* 2. pop: 移除栈顶元素, 返回被移除的元素
* 3. peek: 返回栈顶的元素, 不对栈做任何修改
* 4. isEmpty: 判断栈是否有元素
* 5. isSize: 返回栈的个数
* 6. toString: 将栈结构的内容以字符串形式返回
* */

function Stack() {
	// 栈中的元素
	this.stack = []

	Stack.prototype.push = function (element) {
		this.stack.push(element)
	}

	Stack.prototype.pop = function () {
		return this.stack.pop()
	}

	Stack.prototype.peek = function () {
		return this.stack[this.stack.length - 1]
	}

	Stack.prototype.isEmpty = function () {
		return !!this.stack.length
	}

	Stack.prototype.isSize = function () {
		return this.stack.length
	}
	Stack.prototype.toString = function () {
		return this.stack.toString()
	}
}

// 十进制转二进制
/*
* 100 转二进制计算过程:
* 100/2 余 0
* 50/2  余 0
* 25/2  余 1
* 12/2  余 0
* 6/2   余 0
* 3/2   余 1
* 1/2   余 1
* 结果是 1100100
* */
// 方法一: 用普通的字符串实现
function decTobin(number) {
	let result = ''
	// 循环操作
	// const
	while (number > 0) {
		// 获取余数入栈
		result = number % 2 + result
		// 获取整除后的结果作为下一次的被除数
		number = Math.floor(number / 2)
	}
	return result
}

console.log(decTobin(10))
